public class Text5 {
    // 面试题 17.19.消失的两个数字
    public int[] missingTwo(int[] nums) {
        int tmp = 0;
        for(int x : nums){
            tmp ^= x;
        }
        for(int i = 0; i <= nums.length + 2; i++){
            tmp ^= i;
        }

        int dd = 0;
        while(true){
            if(((tmp >> dd) & 1) == 1)
                break;
            else
                dd++;
        }

        int[] ret = new int[2];
        for(int x : nums){
            if(((x >> dd) & 1) == 1)
                ret[1] ^= x;
            else
                ret[0] ^= x;
        }

        for(int i = 0; i <= nums.length + 2; i++){
            if(((i >> dd) & 1) == 1)
                ret[1] ^= i;
            else
                ret[0] ^= i;
        }

        return ret;
    }
}
